﻿/*
实现 strStr() 函数。
给你两个字符串 haystack 和 needle ，请你在 haystack 字符串中找出 needle 字符串出现的第一个位置（下标从 0 开始）。
如果不存在，则返回 -1。 当needle 是空字符串时我们应当返回 0 。
*/
#include <stdlib.h>
#include <iostream>
#include <string>
using namespace std;

int strStr(string haystack, string needle)
{
	int i = 0;
	int j = 0;
	int starth = i;
	int startn = j;
	if (needle.size() == 0)
	{
		return 0;
	}
	while (i < haystack.size())
	{
		i = starth;
		j = startn;
		while (i < haystack.size() && j < needle.size() && haystack[i] == needle[j])
		{
			i++;
			j++;
		}
		if (j == needle.size())
		{
			return starth;
		}
		if (i == haystack.size())
		{
			return -1;
		}
		
		starth++;
	}
	return -1;
}


int strStr1(string haystack, string needle) {
	if (needle.empty())
	{
		return 0;
	}
	int i = 0, j = 0;
	while (haystack[i] != '\0' && needle[j] != '\0')
	{
		if (haystack[i] == needle[j])
		{
			i++;
			j++;
		}
		else
		{
			i = i - j + 1;
			j = 0;
		}
	}
	if (needle[j] == '\0')
	{
		return i - j;
	}

	return -1;
}
int main()
{
	string haystack = "a";
	string needle = "a";
	cout << strStr(haystack, needle) <<endl;
	system("pause");
	return 0;
}